package pickbook.model;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

//판매도서 서비스 implements 후 정의
@Service
public class SaleBookServiceImpl implements SaleBookService {
	
	@Resource(name="saleBookDAOImpl")
	private SaleBookDAO saleBookDAO;
	
	@Override
	public List<SaleBookVO> getAllBookList() {
		return null;
	}

	/**
	 * method : getSearchListByFactor
	 * comment : 검색어(factor)에 해당하는 책 정보를 찾는 메서드
	 * 
	 * @param factor
	 * @param pageNo
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	@Override
	public ListVO getSearchListByFactor(String factor, String pageNo) {
		
		if(pageNo==null||pageNo=="")  pageNo="1";
		
		List<SaleBookVO> list=saleBookDAO.getSearchListByFactor(factor, pageNo);
		
		int total=saleBookDAO.searchByFactorTotalContent(factor);
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}

	/**
	 * method : getSearchListByLocationUniv
	 * comment : 위치(location)과 대학교(univ)에 해당하는 책 정보를 찾는 메서드
	 * 
	 * @param location
	 * @param univ
	 * @param pageNo
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	@Override
	public ListVO getSearchListByLocationUniv(String location, String univ, String pageNo) {
		
		if(pageNo==null||pageNo=="")  pageNo="1";
		
		List<SaleBookVO> list=saleBookDAO.getSearchListByLocationUniv(location, univ, pageNo);//판매도서 지역, 대학 검색결과
		
		int total=saleBookDAO.searchByLocationUnivTotalContent(location, univ);//검색결과 총 갯수
		
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
	}

	/**
	 * method : insertBook
	 * comment : 판매도서 추가 메서드
	 * 
	 * @param sbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	@Override
	public void insertBook(SaleBookVO sbvo) {
		saleBookDAO.insertBook(sbvo);
	}
	
	/**
	 * method : updateBook
	 * comment : 나의 판매도서 수정하는 메서드
	 * 
	 * @param sbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	@Override
	public void updateBook(SaleBookVO sbvo) {
		saleBookDAO.updateBook(sbvo);
	}
	
	/**
	 * method : deleteBook
	 * comment : 나의 판매도서 삭제하는 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	@Override
	public void deleteBook(int no) {
		saleBookDAO.deleteBook(no);
	}
	
	/**
	 * method : findByBookNo
	 * comment : 책 번호에 해당하는 도서정보 조회 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	@Override
	public SaleBookVO findByBookNo(int no) {
		return saleBookDAO.findByBookNo(no);
	}

	/**
	 * method : getRecentBookList
	 * comment : pageNo를 통해 최신 순으로 판매도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @return
	 * 
	 * @author 제형규, 이형철
	 * @date 2014-07-02
	 */
	@Override
	public ListVO getRecentBookList(String pageNo) {
		
		if(pageNo==null||pageNo=="")  pageNo="1";
		
		List<SaleBookVO> list=saleBookDAO.getRecentBookList(pageNo);//판매도서 목록ㄴ
		
		int total=saleBookDAO.totalContent();//판매도서 총 갯수
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}
	
	/**
	 * method : getMySaleBookList
	 * comment : pageNo와 id를 통해 최신 순으로 나의 판매도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @param id
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	@Override
	public ListVO getMySaleBookList(String pageNo, String id) {
		
		if(pageNo==null||pageNo=="")  pageNo="1";
		
		List<SaleBookVO> list=saleBookDAO.getMySaleBookList(pageNo, id);//나의 판매도서 목록
		
		int total=saleBookDAO.myTotalSaleContent(id);//나의 판매도서 총 갯수
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}

	/**
	 * method : updateVisible
	 * comment : no와 bVisible으로 나의 판매도서 공개 여부를 업데이트하는 메서드
	 * 
	 * @param no
	 * @param bVisible
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	@Override
	public String updateVisible(int no, int bVisible) {

		String onoff = "";
		
		if(bVisible == 1){//공개여부 ON일 경우
			bVisible = 0;
			onoff = "OFF";
		}else{//공개여부 OFF일 경우
			bVisible = 1;
			onoff = "ON";
		}
		
		saleBookDAO.updateVisible(no, bVisible);
		SaleBookVO sbvo = saleBookDAO.findByBookNo(no);
		
		return onoff;
		
	}

}
